//利用数组实现栈结构，左侧栈底，右侧栈顶
class Stack {
    // 构造器
    constructor(arr = []) {
        this.arr = arr
    }
    // 进栈
    push(element) {
        this.arr.push(element)
    }
    // 出栈
    pop() {
        return this.arr.pop()
    }
    // 读取栈顶
    peek() {
        return (this.isEmpty()) ? null : this.arr[this.arr.length-1]
    }
    // 判空
    isEmpty() {
        return this.arr.length === 0
    }
    // 获取栈长
    stackSize() {
        return this.arr.length
    }
    // 返回描述字符串
    toString() {
        let str = `(栈底) > `
        this.arr.forEach(item => {
            str += `${item} > `
        })
        return `${str} (栈顶)`
    }
}

module.exports = Stack




// 测试用例
// let s = new Stack([1,2,3,4,5])
// s.push(6)
// console.log(s.isEmpty());